diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index d295ca9..94a2993 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -446,27 +446,28 @@
 
 		// This function may get "item1 item2" as a string, and so
 		// we may need "`item1` `item2`" and not "`item1 item2`"
-		if (strpos($item, ' ') !== FALSE)
+		if (ctype_alnum($item) === FALSE)
 		{
 			// This function may get "field >= 1", and need it to return "`field` >= 1"
-			if ($first_word_only === TRUE)
-			{
-				return '`'.preg_replace('/ /', '` ', $item, 1);
-			}
+			$lbound = ($first_word_only === TRUE) ? '' : '|\s|\(';
 
-			$item = preg_replace('/(^|\s|\()([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+			$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+		}
+		else
+		{
+			return "`{$item}`";
 		}
 
 		$exceptions = array('AS', '/', '-', '%', '+', '*');
 		
 		foreach ($exceptions as $exception)
 		{
+		
 			if (stristr($item, " `{$exception}` ") !== FALSE)
 			{
 				$item = preg_replace('/ `('.preg_quote($exception).')` /i', ' $1 ', $item);
 			}
 		}
-		
 		return $item;
 	}
 			
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 6d3b722..160a56d 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -557,27 +557,28 @@
 
 		// This function may get "item1 item2" as a string, and so
 		// we may need "`item1` `item2`" and not "`item1 item2`"
-		if (strpos($item, ' ') !== FALSE)
+		if (ctype_alnum($item) === FALSE)
 		{
 			// This function may get "field >= 1", and need it to return "`field` >= 1"
-			if ($first_word_only === TRUE)
-			{
-				return '`'.preg_replace('/ /', '` ', $item, 1);
-			}
+			$lbound = ($first_word_only === TRUE) ? '' : '|\s|\(';
 
-			$item = preg_replace('/(^|\s|\()([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+			$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+		}
+		else
+		{
+			return "`{$item}`";
 		}
 
 		$exceptions = array('AS', '/', '-', '%', '+', '*');
 		
 		foreach ($exceptions as $exception)
 		{
+		
 			if (stristr($item, " `{$exception}` ") !== FALSE)
 			{
 				$item = preg_replace('/ `('.preg_quote($exception).')` /i', ' $1 ', $item);
 			}
 		}
-		
 		return $item;
 	}
 			
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 0bdfc41..c5c582d 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -422,27 +422,28 @@
 
 		// This function may get "item1 item2" as a string, and so
 		// we may need "`item1` `item2`" and not "`item1 item2`"
-		if (strpos($item, ' ') !== FALSE)
+		if (ctype_alnum($item) === FALSE)
 		{
 			// This function may get "field >= 1", and need it to return "`field` >= 1"
-			if ($first_word_only === TRUE)
-			{
-				return '`'.preg_replace('/ /', '` ', $item, 1);
-			}
+			$lbound = ($first_word_only === TRUE) ? '' : '|\s|\(';
 
-			$item = preg_replace('/(^|\s|\()([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+			$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+		}
+		else
+		{
+			return "`{$item}`";
 		}
 
 		$exceptions = array('AS', '/', '-', '%', '+', '*');
 		
 		foreach ($exceptions as $exception)
 		{
+		
 			if (stristr($item, " `{$exception}` ") !== FALSE)
 			{
 				$item = preg_replace('/ `('.preg_quote($exception).')` /i', ' $1 ', $item);
 			}
 		}
-		
 		return $item;
 	}
 			
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 63a72f5..fa27f03 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -444,27 +444,28 @@
 
 		// This function may get "item1 item2" as a string, and so
 		// we may need ""item1" "item2"" and not ""item1 item2""
-		if (strpos($item, ' ') !== FALSE)
+		if (ctype_alnum($item) === FALSE)
 		{
 			// This function may get "field >= 1", and need it to return ""field" >= 1"
-			if ($first_word_only === TRUE)
-			{
-				return '"'.preg_replace('/ /', '" ', $item, 1);
-			}
+			$lbound = ($first_word_only === TRUE) ? '' : '|\s|\(';
 
-			$item = preg_replace('/(^|\s|\()([\w\d\-\_]+?)(\s|\)|$)/iS', '$1"$2"$3', $item);
+			$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1"$2"$3', $item);
+		}
+		else
+		{
+			return ""{$item}"";
 		}
 
 		$exceptions = array('AS', '/', '-', '%', '+', '*');
 		
 		foreach ($exceptions as $exception)
 		{
+		
 			if (stristr($item, " "{$exception}" ") !== FALSE)
 			{
 				$item = preg_replace('/ "('.preg_quote($exception).')" /i', ' $1 ', $item);
 			}
 		}
-		
 		return $item;
 	}
 			
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index 2d0ca15..110b208 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -438,27 +438,28 @@
 
 		// This function may get "item1 item2" as a string, and so
 		// we may need "`item1` `item2`" and not "`item1 item2`"
-		if (strpos($item, ' ') !== FALSE)
+		if (ctype_alnum($item) === FALSE)
 		{
 			// This function may get "field >= 1", and need it to return "`field` >= 1"
-			if ($first_word_only === TRUE)
-			{
-				return '`'.preg_replace('/ /', '` ', $item, 1);
-			}
+			$lbound = ($first_word_only === TRUE) ? '' : '|\s|\(';
 
-			$item = preg_replace('/(^|\s|\()([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+			$item = preg_replace('/(^'.$lbound.')([\w\d\-\_]+?)(\s|\)|$)/iS', '$1`$2`$3', $item);
+		}
+		else
+		{
+			return "`{$item}`";
 		}
 
 		$exceptions = array('AS', '/', '-', '%', '+', '*');
 		
 		foreach ($exceptions as $exception)
 		{
+		
 			if (stristr($item, " `{$exception}` ") !== FALSE)
 			{
 				$item = preg_replace('/ `('.preg_quote($exception).')` /i', ' $1 ', $item);
 			}
 		}
-		
 		return $item;
 	}
 			
